<?php

namespace App\Containers\AppSection\Pledge\Models;

use App\Containers\AppSection\File\Models\File;
use App\Ship\Parents\Models\Model;
use Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson;

/**
 * Иные сведения
 * @package App\Models\Projects\Pledges
 *
 * @property int $id Id
 * @property string $name Наименование
 * @property string $characteristics Качественные и количественные характеристики
 * @property string $address Адрес
 * @property string $other_information Иные сведения
 * @property string $serial_number Условный или идентификационный/серийный номер
 * @property string $date Дата приобретения права собственности на объект
 *
 * @property File[] $documents Документы
 * @property File[] $object_documents Документы на объект
 * @property File[] $images Фото залога
 */
class Other extends Model
{
    use HasJsonRelationships;

    public $timestamps = false;
    protected $table = 'pledge_others';
    protected $casts = [
        'documents' => 'json',
        'object_documents' => 'json',
        'images' => 'json',
    ];

    protected $fillable = [
        'name',
        'characteristics',
        'address',
        'other_information',
        'serial_number',
        'date',
        'documents',
        'object_documents',
        'images',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'Other';

    /**
     * Документы
     * @return BelongsToJson Files
     */
    public function documents(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'documents');
    }

    /**
     * Документы на объект
     * @return BelongsToJson Files
     */
    public function object_documents(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'object_documents');
    }

    /**
     * Фото залога
     * @return BelongsToJson Files
     */
    public function images(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'images');
    }
}
